package kr.co.gasan.bdt;

import java.io.Serializable;
import java.util.List;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

@Entity
@Table(name="CO_CUSTOMER")
@NamedQuery(name="findCustomerByName", query="select c from CUSTOMER c where c.name=:name")
//@NamedQuery : Static query 를 entity class에 직접 명기
public class Customer implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 7440991282117148289L;

	@Id // Primary Key에 해당하는 ID필드임을 표시한다.
	private String id;
	private String name;
	private String address;
	
    // ---cascade가 아래와 같이 설정되면 Customer entity가 생성/삭제 될때 --- //
    // ---해당되는 entity도 같이 생성/삭제된다.                           --- //
//    @OneToMany(mappedBy="customer", cascade={CascadeType.PERSIST, CascadeType.REMOVE})
	////@OneToMany는 1:N 관계를 표현하기 위한 필드임을 표시한다.
//    private List<Orders> orders;
    
    // ---Entity에서 Defult constructor 는 필수이다--- //
    public Customer(){}
    
    public Customer(String id, String name, String address) {
        this.id = id;
        this.name = name;
        this.address = address;
    }

    public String getId() {return id;}

    public String getName(){return name;}
    
    public String getAddress(){return address;}
    
    public void setAddress(String address){this.address = address;}
    
//    public List<Orders> getOrders(){return orders;}
//    
//    public void setOrders(List<Orders> orders) {this.orders = orders;}
//
//    public void addOrder(Orders o){
//        if(orders == null)
//            orders = new LinkedList<Orders>();
//        orders.add(o);
//    }
}
